home *** CD-ROM | disk | FTP | other *** search
- #include "ansidecl.h"
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #ifndef __USE_GNU
- #ifdef atarist
- #include <siglist.h>
- #define strsignal(s) signal_names[(s)]
- #else
- #define strsignal(s) ("signal FOO")
- #endif
- #endif
-
- #ifndef __USE_GNU
- #ifdef sun
- #define raise(X) kill(getpid(), X)
- #endif
- #endif
-
- int win = 0;
-
- void
- DEFUN(handler, (sig), int sig)
- {
- printf("Received signal %d (%s).\n", sig, strsignal(sig));
- win = 1;
- }
-
- int
- DEFUN_VOID(main)
- {
- if (signal(SIGINT, handler) == SIG_ERR)
- {
- perror("signal: SIGINT");
- return(EXIT_FAILURE);
- }
-
- puts("Set handler.");
-
- printf("Sending myself signal %d.\n", SIGINT);
- fflush(stdout);
-
- if (raise(SIGINT) < 0)
- {
- perror("raise: SIGINT");
- return(EXIT_FAILURE);
- }
-
- if (!win)
- {
- puts("Didn't get any signal.");
- return(EXIT_FAILURE);
- }
-
- puts("Got a signal.");
- return(EXIT_SUCCESS);
- }
-